/***
 * 日志存储
 */

// 引入 log4js 模块，专门用于记录日志
const log4js = require('log4js');

// 定义日志等级，方便后面直接使用这些常量（可选但更规范）
const levels = {
  'trace': log4js.levels.TRACE,  // 最详细的日志
  'debug': log4js.levels.DEBUG,  // 调试日志
  'info': log4js.levels.INFO,    // 信息日志（常用）
  'warn': log4js.levels.WARN,    // 警告日志
  'error': log4js.levels.ERROR,  // 错误日志（常用）
  'fatal': log4js.levels.FATAL   // 致命错误
}

log4js.configure({
  appenders: {
    // 控制台输出
    console: { type: 'console' },  

    // info 类型日志保存到 logs/info.log 文件中
    info: {
      type: 'file',
      filename: './logs/info.log'
    },

    // error 类型日志保存为按日期生成的文件 logs/log-2025-04-22.log 这样
    error: {
      type: 'dateFile',               // 按日期分类存储
      filename: './logs/log',         // 文件名前缀
      pattern: 'yyyy-MM-dd.log',      // 文件名格式（日期）
      alwaysIncludePattern: true      // 是否一直带上日期
    }
  },

  categories: {
    // 默认的分类，只输出到控制台
    default: {
      appenders: ['console'],
      level: 'debug'  // 默认输出最低是 debug 级别的日志
    },

    // info 分类：输出到 info 文件
    info: {
      appenders: ['info'],
      level: 'info'  // 只记录 info 及以上的日志
    },

    // error 分类：输出到 error 文件（按日期分）
    error: {
      appenders: ['error'],
      level: 'error' // 只记录 error 及以上的日志
    }
  }
});



// 打印 debug 类型日志（开发时常用）
exports.debug = (content) => {
  const logger = log4js.getLogger();      // 获取默认分类（default）配置
  logger.level = levels.debug;            // 设置当前日志级别
  logger.debug(content);                  // 打印日志内容
}

// 打印 info 类型日志（一般用于普通运行信息）
exports.info = (content) => {
  const logger = log4js.getLogger('info');  // 获取 info 分类的配置
  logger.level = levels.info;
  logger.info(content);
}

// 打印 error 类型日志（异常错误记录）
exports.error = (content) => {
  const logger = log4js.getLogger('error'); // 获取 error 分类配置
  logger.level = levels.error;
  logger.error(content);
}
